package com.linkage.bss.crm.packagemgr.bmo;

import java.util.List;
import java.util.Map;

import com.linkage.bss.commons.dao.Page;
import com.linkage.bss.crm.packagemgr.dto.PackInfoDto;
import com.linkage.bss.crm.packagemgr.model.ActionOrderItem;
import com.linkage.bss.crm.packagemgr.model.Package;

/**
 *
 * 包管理 BMO
 * @author  sgl
 * @version  [版本号, 2013-4-28]
 * @see  [相关类/方法]
 * @since  [产品/模块版本]
 */
public interface IPackageManagerBMO {

	/**
	 *
	 * 获得包数量
	 * @param map
	 * @return int
	 */
	public int getPackageByCondCount(Map map);

	/**
	 *
	 * 获得包集合
	 * @param map
	 * @param page
	 * @return List<Package>
	 */
	public List<Package> getPackageByCond(Map map, Page page);

	/**
	 * 获取包完整信息
	 * @param packageId
	 * @return [参数说明]
	 *
	 * @return Package [返回类型说明]
	 * @exception throws [违例类型] [违例说明]
	 * @see [类、类#方法、类#成员]
	 */
	public Package getPackageById(Long packageId);

	/**
	 * 根据包ID删除完整性，包信息
	 * @param packageId [参数说明]
	 *
	 * @return void [返回类型说明]
	 * @exception throws [违例类型] [违例说明]
	 * @see [类、类#方法、类#成员]
	 */
	public void delPackageByPackId(Long packageId);

	/**
	 * 删除包的所有信息，包括包的基本信息
	 * @param packageId [参数说明]
	 *
	 * @return void [返回类型说明]
	 * @exception throws [违例类型] [违例说明]
	 * @see [类、类#方法、类#成员]
	 */
	public void delPackageAllById(Long packageId);

	/**
	 *获取条目中所有信息，包括参数信息。
	 * @param packageID
	 * @return [参数说明]
	 *
	 * @return List<ActionOrderItem> [返回类型说明]
	 * @exception throws [违例类型] [违例说明]
	 * @see [类、类#方法、类#成员]
	 */
	public List<ActionOrderItem> getActionOrderItemByPackId(Long packageID);

	/**
	 * 保存包信息
	 * @param pack  对象
	 * @return true  成功， false 失败。
	 *
	 * @return boolean [返回类型说明]
	 * @exception throws [违例类型] [违例说明]
	 * @see [类、类#方法、类#成员]
	 */
	public boolean savePackage(Package pack);

	/**
	 * 包修改
	 * @param pack
	 * @return [参数说明]
	 *
	 * @return boolean [返回类型说明]
	 * @exception throws [违例类型] [违例说明]
	 * @see [类、类#方法、类#成员]
	 */
	public boolean updatePackage(Package pack, Map operateMap);

	/**
	 * 查询包详细信息，包括包参数，包动作
	 * @createDt 2013-4-8 上午9:41:50
	 * @param packId
	 */
	public PackInfoDto queryPackInfoByPackId(Long packId);

}
